package com.ruoyi.system.dao;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.dto.MultiLatitudDto;
import com.ruoyi.system.domain.vo.MultiLatitudVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface MultiLatitudeDao {

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result> query(MultiLatitudDto.Query dto);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result> queryJbxxInfoNoGjz(MultiLatitudDto.Query dto);

    /**
     * 查询有病程关键字和超声关键字、诊断名称的就诊流水号
     * @return
     */
    List<String> queryJzlshByCsgjz(@Param("csbggjz")String csbggjz,
                                   @Param("rysjStartTime") String rysjStartTime,
                                   @Param("rysjEndTime") String rysjEndTime);



    /**
     * 查询有病程关键字和超声关键字、诊断名称的就诊流水号
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<String> queryJzlshByBcgjz(@Param("bcgjz")String bcgjz,
                                   @Param("rysjStartTime") String rysjStartTime,
                                   @Param("rysjEndTime") String rysjEndTime);

    /**
     * 根据诊断编码查询就诊流水号
     * @param bcgjz
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<String> queryJzlshByZdbm(@Param("zdbm")String zdbm,
                                  @Param("rysjStartTime") String rysjStartTime,
                                  @Param("rysjEndTime") String rysjEndTime);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result> queryJbxxInfo( @Param("size") Integer size, @Param("num") Integer num,
                                              @Param("bcgjz") String bcgjz,
                                              @Param("rysjStartTime") String rysjStartTime,
                                              @Param("rysjEndTime") String rysjEndTime,
                                              @Param("cysjStartTime") String cysjStartTime,
                                              @Param("cysjEndTime") String cysjEndTime,
                                              @Param("ryks") String ryks,
                                              @Param("xm") String xm,
                                              @Param("zyh") String zyh,
                                              @Param("jzlshList") List<String> jzlshList,
                                              @Param("csbggjz") String csbggjz,
                                               @Param("zdbm")String zdbm);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result.Zdmc> queryZdxx( @Param("jzlsh") String jzlsh);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result.YxResult> queryYxjcbgByJzlsh(@Param("jzlsh") String jzlsh);

    @DataSource(DataSourceType.SLAVE)
    Integer queryJbxxInfo_COUNT(@Param("bcgjz") String bcgjz,
                                               @Param("rysjStartTime") String rysjStartTime,
                                               @Param("rysjEndTime") String rysjEndTime,
                                               @Param("cysjStartTime") String cysjStartTime,
                                               @Param("cysjEndTime") String cysjEndTime,
                                               @Param("ryks") String ryks,
                                               @Param("xm") String xm,
                                               @Param("zyh") String zyh,
                                               @Param("jzlshList") List<String> jzlshList);
    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result> queryZdxxInfo(@Param("jzlshList") List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result.BcLb> queryProgress(@Param("size") Integer size, @Param("num") Integer num,@Param("gjz") String gjz,
                                                   @Param("jzlsh") String jzlsh);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result.BcLb> queryProgressByGjz(@Param("gjz") String gjz,
                                                   @Param("jzlsh") String jzlsh);

    @DataSource(DataSourceType.SLAVE)
    List<MultiLatitudVo.Result> select( @Param("size") Integer size, @Param("num") Integer num,
                                             @Param("bcgjz") String bcgjz,
                                             @Param("rysjStartTime") String rysjStartTime,
                                             @Param("rysjEndTime") String rysjEndTime,
                                             @Param("cysjStartTime") String cysjStartTime,
                                             @Param("cysjEndTime") String cysjEndTime,
                                             @Param("ryks") String ryks,
                                             @Param("xm") String xm,
                                             @Param("zyh") String zyh,
                                             @Param("jzlshList") List<String> jzlshList,
                                        @Param("csbggjz") String csbggjz);

    @DataSource(DataSourceType.SLAVE)
    MultiLatitudVo.QueryDetail queryBasy(@Param("jzlsh") String jzlsh);

    @DataSource(DataSourceType.SLAVE)
    Integer select_COUNT(@Param("bcgjz") String bcgjz,
                         @Param("rysjStartTime") String rysjStartTime,
                         @Param("rysjEndTime") String rysjEndTime,
                         @Param("cysjStartTime") String cysjStartTime,
                         @Param("cysjEndTime") String cysjEndTime,
                         @Param("ryks") String ryks,
                         @Param("xm") String xm,
                         @Param("zyh") String zyh,
                         @Param("jzlshList") List<String> jzlshList,
                         @Param("csbggjz") String csbggjz);

    @DataSource(DataSourceType.SLAVE)
    Integer selectGJZ_COUNT(@Param("bcgjz") String bcgjz,
                         @Param("rysjStartTime") String rysjStartTime,
                         @Param("rysjEndTime") String rysjEndTime,
                         @Param("cysjStartTime") String cysjStartTime,
                         @Param("cysjEndTime") String cysjEndTime,
                         @Param("ryks") String ryks,
                         @Param("xm") String xm,
                         @Param("zyh") String zyh,
                         @Param("jzlshList") List<String> jzlshList);

}
